﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogic;
using DataAccess;
using Config;

namespace Manager
{
    public partial class ViewUser : System.Web.UI.Page
    {
        UserBusiness userBusiness = new UserBusiness();

        private int UserID
        {
            get
            {
                try
                {
                    return Convert.ToInt32(Request.QueryString["UserID"]);
                }
                catch (System.Exception)
                {
                    return 0;
                }
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {if (!Page.IsPostBack)
            {
                Load_Data();
            }
        }

        private void Load_Data()
        {
            UserInfo userInfo = UserData.SelectByUserID(UserID);

            txtFullName.Text = userInfo.FullName;
            txtUserName.Text = userInfo.UserName;
            txtEmail.Text = userInfo.Email;
            txtAddress.Text = userInfo.Address;
            txtPhone.Text = userInfo.Phone;
            txtDesc.Text = userInfo.Description;

            if (userInfo.UserStatus == true)
            {
                rbtActive.Checked = true; ;
            } 
            else
            {
                rbtDeactive.Checked = true;
            }

            lblViewUser.Text = "<a href=\"ViewUser.aspx?UserID=" + UserID + "\">Xem và Sửa đổi thông tin</a>";
        }

        private bool Check_Input()
        {
            UserInfo oldUserInfo = UserData.SelectByUserID(UserID);

            if (txtFullName.Text.Trim() == "")
            {
                lblErrFullName.Visible = true;
                lblErrFullName.Text = "Bạn chưa nhập Họ tên.";
                txtFullName.Focus();
                return false;
            }

            if (txtUserName.Text.Trim() == "")
            {
                lblErrUserName.Visible = true;
                lblErrUserName.Text = "Bạn chưa nhập Tên đăng nhập.";
                txtUserName.Focus();
                return false;
            }

            if (txtPassword.Text.Trim() == "")
            {
                lblErrPassword.Visible = true;
                lblErrPassword.Text = "Bạn chưa nhập mật khẩu.";
                txtPassword.Focus();
                return false;
            }

            if (txtPassword.Text.Trim().Length <= 5)
            {
                lblErrPassword.Visible = true;
                lblErrPassword.Text = "Mật khẩu chứa ít nhất 6 ký tự.";
                txtPassword.Focus();
                return false;
            }

            if (txtEmail.Text.Trim() == "")
            {
                lblErrEmail.Visible = true;
                lblErrEmail.Text = "Bạn chưa nhập Địa chỉ Email.";
                txtEmail.Focus();
                return false;
            }

            if (!Library.Validate.IsEmail(txtEmail.Text.Trim()))
            {
                lblErrEmail.Visible = true;
                lblErrEmail.Text = "Email không đúng định dạng. Mời bạn nhập lại.";
                txtEmail.Focus();
                return false;
            }

            string userName = txtUserName.Text.Trim();
            if (userName != oldUserInfo.UserName)
            {
                int checkExists = userBusiness.CheckExistsUserName(userName);
                if (checkExists != 0)
                {
                    lblErrUserName.Visible = true;
                    lblErrUserName.Text = "Tên đăng nhập đã tồn tại. Mời bạn chọn Tên đăng nhập khác.";
                    txtUserName.Focus();
                    return false;
                }
            }

            string email = txtEmail.Text.Trim();
            if (email != oldUserInfo.Email)
            {
                int checkExists = userBusiness.CheckExistsEmail(email);
                if (checkExists != 0)
                {
                    lblErrEmail.Visible = true;
                    lblErrEmail.Text = "Email đã tồn tại. Mời bạn nhập Email khác.";
                    txtEmail.Focus();
                    return false;
                }
            }

            return true;
        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            UserInfo oldUserInfo = UserData.SelectByUserID(UserID);
            UserInfo newUserInfo = new UserInfo();

            if (Check_Input())
            {
                newUserInfo.UserID = UserID;
                newUserInfo.SiteID = Config.Global.Settings.SiteID;
                newUserInfo.UserName = txtUserName.Text.Trim();
                newUserInfo.FullName = txtFullName.Text.Trim();
                string newPassword = Encrypt.Encryption.GetMD5(txtPassword.Text.Trim());
                string oldPassword = oldUserInfo.Password;
                if (newPassword != oldPassword)
                {
                    newUserInfo.Password = newPassword;
                } 
                else
                {
                    newUserInfo.Password = oldPassword;
                }
                newUserInfo.Email = txtEmail.Text.Trim();
                newUserInfo.Address = txtAddress.Text.Trim();
                newUserInfo.Phone = txtPhone.Text.Trim();
                newUserInfo.Description = txtDesc.Text.Trim();
                if (rbtActive.Checked)
                {
                    newUserInfo.UserStatus = true;
                }
                else
                {
                    newUserInfo.UserStatus = false;
                }

                bool check = UserData.Update(newUserInfo);

                if (check)
                {
                    UserData.Update(newUserInfo);
                    lblMessage.Visible = true;
                    lblMessage.Text = "Cập nhật thành công.";
                    btnContinue.Visible = true;
                } 
                else
                {
                    lblMessage.Visible = true;
                    lblMessage.Text = "Cập nhật không thành công. Lỗi: ";   
                }
            }
        }

        protected void btnClose_Click(object sender, EventArgs e)
        {
            Response.Redirect("UserManager.aspx");
        }

        protected void btnContinue_Click(object sender, EventArgs e)
        {
            Response.Redirect("UserManager.aspx");
        }
    }
}